/*******************************************************************************
 * $Header: /cvsroot/oloa/org.gocom.bpm.platform.model/src/org/gocom/bpm/platform/model/web/IProcessObjectProvider.java,v 1.1 2011/07/03 02:30:49 hufulai Exp $
 * $Revision: 1.1 $
 * $Date: 2011/07/03 02:30:49 $
 *
 *==============================================================================
 *
 * Copyright (c) 2001-2006 Primeton Technologies, Ltd.
 * All rights reserved.
 * 
 * Created on 2010-5-25
 *******************************************************************************/


package com.atozsoft.wf.web;

import java.util.HashMap;
import java.util.List;
import java.util.Map;





import com.primeton.workflow.model.definition.WFProcess;
import com.atozsoft.wf.taglib.Connection;
import com.atozsoft.wf.taglib.State;

/**
 * 
 * ���̶����ṩ��<BR>
 * Ŀ����Ϊ���ܹ��Զ��幹�칤��������WFProcess��������Ӧ������ͼ
 *
 * @author wengzr (mailto:wengzr@primeton.com)
 */
/*
 * Modify history
 * $Log: IProcessObjectProvider.java,v $
 * Revision 1.1  2011/07/03 02:30:49  hufulai
 * �?���ÿ��
 *
 * Revision 1.1  2011/04/06 02:07:35  supyuser
 * *** empty log message ***
 *
 */
public interface IProcessObjectProvider {
	
	
	public static class ProcessObject{
		
		private WFProcess process;
		
		private String processInstName;
		
		private long processInstID=-1;
		
		private long processDefID;
		
		private int strategy;
		

		/**
		 * ��ȡ����������
		 * @return
		 */
		public WFProcess getProcess() {
			return process;
		}

		/**
		 * ���ù���������
		 * @param process
		 */
		public void setProcess(WFProcess process) {
			this.process = process;
		}

		/**
		 * ��ȡ���̶���ID
		 * @return
		 */
		public long getProcessDefID() {
			return processDefID;
		}

		/**
		 * �������̶���ID
		 * @param processDefID
		 */
		public void setProcessDefID(long processDefID) {
			this.processDefID = processDefID;
		}

		/**
		 * ��ȡ����ͼ��ɲ���
		 * @return
		 */
		public int getStrategy() {
			return strategy;
		}

		/**
		 * ��������ͼ��ɲ���
		 * @param strategy
		 */
		public void setStrategy(int strategy) {
			this.strategy = strategy;
		}

		/**
		 * ��ȡ����ʵ��ID
		 * @return
		 */
		public long getProcessInstID() {
			return processInstID;
		}

		/**
		 * ��������ʵ��ID
		 * @param processInstID
		 */
		public void setProcessInstID(long processInstID) {
			this.processInstID = processInstID;
		}

		public String getProcessInstName() {
			return processInstName;
		}

		public void setProcessInstName(String processInstName) {
			this.processInstName = processInstName;
		}
		
		
		
	}

	/**
	 * ��ȡ���̶���<br>
	 * �������ʵ��ID��Ϊ�գ����ȡָ������ʵ�������ͼ<BR>
	 * ���������Ʋ�Ϊ��,����������ƻ�ȡ���°汾������ͼ<br>
	 * ������̶���ID��Ϊ��,���ȡָ�����̶���ID������ͼ<BR>
	 * 
	 * @param processInstID ����ʵ��ID
	 * @param processName �������
	 * @param processDefID ���̶���ID
	 * @return ProcessObject
	 */
	public ProcessObject getProcessObject(long processInstID,String processName,long processDefID);
	

	/**
	 * ��������ʵ��ͼ<BR>
	 * ��ݻ״̬�ػ���Ӧ�������Լ��״̬
	 * @param list �����б�
	 * @param hashMap ״̬����
	 * @param processObject ���̶���
	 */
	public void transform2ProcessInstGraph(List<Connection> connections,Map<String,State> states,ProcessObject processObject);
	
}
